#ifndef MethodAccessor_First
#define MethodAccessor_First
#ifdef __GNUG__
#pragma interface
#endif

#include "Object.h"

class Collection;
class PathLookup;

//---- PeMethodAccessor --------------------------------------------------------

class PeMethodAccessor: public Object {
public:
	PeMethodAccessor();
	virtual Collection *FindMethods(Class *cl, PathLookup *universe);
};

//---- PeMapMethodAccessor -----------------------------------------------------

class PeMapMethodAccessor: public PeMethodAccessor {
public:
	PeMapMethodAccessor();
	Collection *FindMethods(Class*, PathLookup *universe);

protected:
	const char *GetMapFileName(Class*, PathLookup*);
};

//---- PeScanMethodAccessor ----------------------------------------------------

class PeScanMethodAccessor: public PeMethodAccessor {
public:
	PeScanMethodAccessor();
	Collection *FindMethods(Class *cl, PathLookup *universe);
};

#endif
